package br.com.unip.menudroidweb.model;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "pedido")
@NamedQueries(value={
		@NamedQuery(name="Pedido.buscarPedidoFinalizado", query="select p from Pedido p where p.finalizado = :finalizado")		
})
public class Pedido implements Serializable {

	private static final long serialVersionUID = -1775821194292074585L;
	
	public static final String PROCURAR_POR_PEDIDO_FINALIZADO = "Pedido.buscarPedidoFinalizado";

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private int idPedido;

	@OneToOne
	@JoinColumn(name = "idDisposistivo")
	private Dispositivo idDispositivo;

	@OneToOne
	@JoinColumn(name = "idFormaPagamento")
	private FormaPagamento idFormaPagamento;

	@Temporal(TemporalType.TIMESTAMP)
	private Date dataPedido;

	@Column(nullable = false)
	private double total;

	@OneToMany(mappedBy = "pedido", cascade=CascadeType.ALL)
	private List<ItemPedido> itensPedido;
	
	@Column(nullable = true)
	private boolean finalizado = false;

	public Pedido() {

	}

	public int getIdPedido() {
		return idPedido;
	}

	public void setIdPedido(int idPedido) {
		this.idPedido = idPedido;
	}

	public Dispositivo getDispositivo() {
		return idDispositivo;
	}

	public void setDispositivo(Dispositivo idDispositivo) {
		this.idDispositivo = idDispositivo;
	}

	public FormaPagamento getIdFormaPagamento() {
		return idFormaPagamento;
	}

	public void setFormaPagamento(FormaPagamento idFormaPagamento) {
		this.idFormaPagamento = idFormaPagamento;
	}

	public Date getDataPedido() {
		return dataPedido;
	}

	public void setDataPedido(Date dataPedido) {
		this.dataPedido = dataPedido;
	}

	public double getTotal() {
		return total;
	}

	public void setTotal(double total) {
		this.total = total;
	}

	public List<ItemPedido> getItensPedido() {
		return itensPedido;
	}

	public void setItensPedido(List<ItemPedido> itensPedido) {
		this.itensPedido = itensPedido;
	}

	public boolean isFinalizado() {
		return finalizado;
	}

	public void setFinalizado(boolean finalizado) {
		this.finalizado = finalizado;
	}
	
	

}
